package com.jsy.common.util.bytecode;

import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;

public class BooleanMyMethodVisitor extends MethodVisitor {
    private String descriptor = "";

    public BooleanMyMethodVisitor(int api, MethodVisitor mv) {
        super(api, mv);
    }

    public BooleanMyMethodVisitor(int api, MethodVisitor mv, String descriptor) {
        super(api, mv);
        this.descriptor = descriptor;
    }

    //返回布尔值
    @Override
    public void visitCode() {
        // 不调用父类的 visitCode 方法，跳过原方法代码
        // 加载常量 true 到操作数栈
        mv.visitInsn(Opcodes.ICONST_1);
        // 加载常量 false 到操作数栈，在字节码中 0 代表 false
//        mv.visitInsn(Opcodes.ICONST_0);
        // 返回布尔值
        mv.visitInsn(Opcodes.IRETURN);
    }

    @Override
    public void visitMaxs(int maxStack, int maxLocals) {
        // 设置栈深度为 1，局部变量数为 0
        super.visitMaxs(1, 0);
    }
}
